Elasticsearch-এ Data Indexing এবং Search Operation
Elasticsearch-এ ডেটা ইন্ডেক্সিং এবং সার্চ অপারেশন হলো ডেটা ব্যবস্থাপনা এবং রিট্রিভালের মূল উপাদান। Elasticsearch ডকুমেন্ট ইনডেক্সিং-এর মাধ্যমে ডেটা সংরক্ষণ করে এবং সার্চ অপারেশন পরিচালনা করে দ্রুত এবং কার্যকরভাবে ডেটা রিট্রিভ করতে সক্ষম হয়। নিচে Elasticsearch-এ Data Indexing এবং Search Operation-এর ধাপ এবং উদাহরণ আলোচনা করা হলো।
১. Data Indexing (ডেটা ইন্ডেক্সিং)
- ডেটা ইন্ডেক্সিং হলো ডকুমেন্টগুলো Elasticsearch-এ সংরক্ষণ করার প্রক্রিয়া। এটি JSON ফরম্যাটে ডেটা সংরক্ষণ করে এবং ডেটাকে দ্রুত সার্চ এবং রিট্রিভ করার জন্য একটি ইন্ডেক্স তৈরি করে।
- একটি ডকুমেন্ট ইন্ডেক্স করার জন্য HTTP POST বা PUT রিকোয়েস্ট ব্যবহার করা হয়।
ডকুমেন্ট ইন্ডেক্স করার উদাহরণ
POST /my-index/_doc/1
{
"name": "John Doe",
"age": 30,
"occupation": "Software Engineer",
"join_date": "2022-05-10"
}
- এখানে:
/my-indexহলো ইন্ডেক্সের নাম।/_doc/1হলো ডকুমেন্ট আইডি, যা ডকুমেন্টটিকে ইউনিকভাবে চিহ্নিত করে।- JSON ফরম্যাটে ডকুমেন্টের তথ্য প্রদান করা হয়েছে।
- সফলভাবে ডকুমেন্ট ইন্ডেক্স করা হলে
createdস্ট্যাটাস সহ একটি রেসপন্স দেখা যাবে।
Bulk Indexing
- একাধিক ডকুমেন্ট একসাথে ইন্ডেক্স করার জন্য Bulk API ব্যবহার করা হয়, যা বড় আকারের ডেটা দ্রুত ইন্ডেক্স করতে সহায়ক।
POST /_bulk
{ "index": { "_index": "my-index", "_id": "2" } }
{ "name": "Jane Doe", "age": 28, "occupation": "Data Scientist", "join_date": "2023-03-01" }
{ "index": { "_index": "my-index", "_id": "3" } }
{ "name": "Alice", "age": 35, "occupation": "Product Manager", "join_date": "2021-11-15" }
- এখানে:
- একাধিক ডকুমেন্ট
/_bulkAPI ব্যবহার করে ইনডেক্স করা হচ্ছে। - প্রতিটি ডকুমেন্টে
_indexএবং_idনির্ধারণ করা হয়েছে, এবং ডকুমেন্টের তথ্য JSON ফরম্যাটে প্রদান করা হয়েছে।
- একাধিক ডকুমেন্ট
২. Search Operation (সার্চ অপারেশন)
- Elasticsearch-এ সার্চ অপারেশন HTTP GET বা POST রিকোয়েস্টের মাধ্যমে পরিচালিত হয়। সার্চের মাধ্যমে নির্দিষ্ট টার্ম, ফিল্ড, বা কিওয়ার্ড দিয়ে ডকুমেন্ট খুঁজে বের করা যায়।
- Elasticsearch-এ সার্চ করার জন্য Query DSL (Domain Specific Language) ব্যবহার করা হয়, যা JSON ফরম্যাটে সার্চ রিকোয়েস্ট তৈরি করে।
বেসিক সার্চ অপারেশন
GET /my-index/_search
{
"query": {
"match": {
"occupation": "Software Engineer"
}
}
}
- এখানে:
/my-index/_searchইন্ডেক্সে সার্চ করা হচ্ছে।"query"ফিল্ডে"match"কন্ডিশন ব্যবহার করে"occupation"ফিল্ডে"Software Engineer"টার্মের সাথে মিল খুঁজে বের করা হচ্ছে।
- রেসপন্সে মিলে যাওয়া ডকুমেন্টগুলো JSON ফরম্যাটে রিটার্ন করা হবে।
ফিল্টার সহ সার্চ অপারেশন
GET /my-index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "occupation": "Software Engineer" } }
],
"filter": [
{ "range": { "age": { "gte": 25, "lte": 35 } } }
]
}
}
}
- এখানে:
"bool"কন্ডিশন ব্যবহার করে"must"এবং"filter"ক্লজ দিয়ে সার্চ করা হয়েছে।"must"ক্লজের মাধ্যমে"occupation"ফিল্ডে"Software Engineer"টার্ম খোঁজা হয়েছে।"filter"ক্লজের মাধ্যমে"age"ফিল্ডে ২৫ থেকে ৩৫ বছরের মধ্যে থাকা ডকুমেন্টগুলো ফিল্টার করা হয়েছে।
- সার্চ রেসপন্সে মিলে যাওয়া ডকুমেন্টগুলো বয়সের সীমাবদ্ধতার মধ্যেও থাকবে।
৩. Advanced Search Operation (উন্নত সার্চ অপারেশন)
- Elasticsearch-এ উন্নত সার্চ অপারেশন করা যায়, যেমন কিওয়ার্ড সার্চ, মাল্টিপল কন্ডিশন, এবং অ্যাগ্রিগেশন।
মাল্টিপল কন্ডিশন সহ সার্চ
GET /my-index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "occupation": "Data Scientist" } },
{ "match": { "department": "Data Science" } }
]
}
}
}
- এখানে
"bool"কন্ডিশন ব্যবহার করে"must"ক্লজে একাধিক কন্ডিশন সেট করা হয়েছে, যাতে"occupation"এবং"department"উভয় ফিল্ডে মিল খুঁজে বের করা যায়।
অ্যাগ্রিগেশন (Aggregation)
- Elasticsearch-এ সার্চ রেসপন্সে অ্যাগ্রিগেশন ব্যবহার করে ডেটা বিশ্লেষণ করা যায়, যেমন গড় (average), সর্বাধিক (max), সর্বনিম্ন (min), ইত্যাদি।
GET /my-index/_search
{
"aggs": {
"average_age": {
"avg": {
"field": "age"
}
}
},
"size": 0
}
- এখানে:
"aggs"ফিল্ডে"average_age"নামক একটি অ্যাগ্রিগেশন তৈরি করা হয়েছে, যা"age"ফিল্ডের গড় হিসাব করবে।"size": 0দিয়ে সার্চ রেসপন্সে ডকুমেন্ট না দেখিয়ে শুধুমাত্র অ্যাগ্রিগেশন রেসপন্স দেখানো হয়েছে।
৪. Searching with Sorting and Pagination
সার্চে সর্চিং (Sorting) ব্যবহার করা
- সার্চ রেসপন্স সর্চ করতে
"sort"ফিল্ড ব্যবহার করা হয়:
GET /my-index/_search
{
"query": {
"match": {
"occupation": "Software Engineer"
}
},
"sort": [
{ "age": { "order": "asc" } }
]
}
- এখানে
"age"ফিল্ডের উপর ভিত্তি করে ডকুমেন্টগুলো এসেন্ডিং (asc) অর্ডারে সর্চ করা হয়েছে।
পেজিনেশন (Pagination) ব্যবহার করা
- পেজিনেশন করার জন্য
"from"এবং"size"প্যারামিটার ব্যবহার করা হয়:
GET /my-index/_search
{
"query": {
"match": {
"occupation": "Data Scientist"
}
},
"from": 0,
"size": 5
}
"from"প্যারামিটার সার্চ রেসপন্সে কোন ডকুমেন্ট থেকে শুরু হবে তা নির্দেশ করে এবং"size"প্যারামিটার কতগুলি ডকুমেন্ট প্রদর্শিত হবে তা নির্ধারণ করে।
উপসংহার
Elasticsearch-এ Data Indexing এবং Search Operation খুবই দ্রুত এবং কার্যকরীভাবে RESTful API ব্যবহার করে সম্পন্ন করা যায়। ডকুমেন্ট ইনডেক্স করে ডেটা সংরক্ষণ, ফিল্টার এবং সার্চ করে ডেটা রিট্রিভ করা Elasticsearch-এ সহজ এবং স্কেলেবল। উন্নত সার্চ অপারেশন এবং অ্যাগ্রিগেশন ব্যবহার করে ডেটা বিশ্লেষণ আরও সহজে করা যায়, যা Elasticsearch-কে একটি শক্তিশালী সার্চ এবং অ্যানালিটিক্স ইঞ্জিন হিসেবে প্রতিষ্ঠিত করে।
Read more